﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tibet.Entidades;
using Tibet.Logica;
using Tibet.GUI.Presentador;
using Tibet.GUI.Contrato;


namespace Tibet.GUI.Vista
{
    public partial class ModificarPerfilReglas : System.Web.UI.Page, IContratoModificarPerfilReglas
    {
        #region Atributos
        const String seModificoBien = "El perfil se ha modificado exitosamente";
        const String error = "Ha ocurrido un ERROR";
        Boolean puedeModificar;
        private PresentadorModificarPerfilRegla _presentador;

        #endregion

        public ModificarPerfilReglas()
        {
            if (!IsPostBack)
            {
                _presentador = new PresentadorModificarPerfilRegla(this);

            }
        }

        #region IContratoModificarPerfilReglas

        public DropDownList busqueda
        {
            get
            {
                return BuscarPR;
            }
            set
            {
                BuscarPR = value;
            }

        }

        public DropDownList NombreDeClase
        {
            get
            {
                return NombreClase;
            }
            set
            {
                NombreClase = value;
            }

        }
        public DropDownList NombreDeAtributo
        {
            get
            {
                return NombreAtributo;
            }
            set
            {
                NombreAtributo = value;
            }

        }
        public DropDownList NombreDeMetodo
        {
            get
            {
                return NombreMetodo;
            }
            set
            {
                NombreMetodo = value;
            }

        }
        public DropDownList NombreDeInterface
        {
            get
            {
                return NombreInterface;
            }
            set
            {
                NombreInterface = value;
            }

        }
        public DropDownList NombreDePaquete
        {
            get
            {
                return NombrePaquete;
            }
            set
            {
                NombrePaquete = value;
            }

        }
        public DropDownList DocumentacionClase
        {
            get
            {
                return DocumentClase;
            }
            set
            {
                DocumentClase = value;
            }

        }
        public DropDownList DocumentacionEstructura
        {
            get
            {
                return DocumentEstructura;
            }
            set
            {
                DocumentEstructura = value;
            }

        }
        public DropDownList DocumentacionMetodo
        {
            get
            {
                return DocumentMetodo;
            }
            set
            {
                DocumentMetodo = value;
            }

        }
        public CheckBox EspacioDeParentesis
        {
            get
            {
                return EspacioParentesis;
            }
            set
            {
                EspacioParentesis = value;
            }

        }
        public CheckBox EspacioDeOperadores
        {
            get
            {
                return EspacioOperadores;
            }
            set
            {
                EspacioOperadores = value;
            }

        }
        public CheckBox DocumentacionBoilerplate
        {
            get
            {
                return DocumentBoilerplate;
            }
            set
            {
                DocumentBoilerplate = value;
            }

        }
        public CheckBox Llave
        {
            get
            {
                return Llaves;
            }
            set
            {
                Llaves = value;
            }

        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["idUsuario"] = Request.QueryString["idUsuario"];
                _presentador.CargarDatos();
                _presentador.llenarBuscarPerfilRegla();
                puedeModificar = false;
                if (Session["alerta"] != null)
                {
                    if (Session["alerta"].Equals("correcto")) //Valida que se ha creado el Perfil de Reglas exitosamente y muestra el PopUp correspondiente
                    {
                        String script = @"<script language = ""JavaScript"">" + "alert('El perfil ha sido modificado con éxito'); </script>";
                        this.RegisterClientScriptBlock("alerta", script);
                        Session["alerta"] = "nocambia";
                    }
                    if (Session["alerta"].Equals("error")) //Valida que se ha creado el Perfil de Reglas exitosamente y muestra el PopUp correspondiente
                    {
                        String script = @"<script language = ""JavaScript"">" + "alert('Ha ocurrido un error intentando modificar el Perfil'); </script>";
                        this.RegisterClientScriptBlock("alerta", script);
                        Session["alerta"] = "noeserror";
                    }
                    if (Session["alerta"].Equals("perfilnoapto")) //Valida que se ha creado el Perfil de Reglas exitosamente y muestra el PopUp correspondiente
                    {
                        String script = @"<script language = ""JavaScript"">" + "alert('EL perfil seleccionado no se puede modificar'); </script>";
                        this.RegisterClientScriptBlock("alerta", script);
                        Session["alerta"] = "noerrorperfil";
                    }

                }
            }
            else
            {
                Session["alerta"] = "nocambia";

            }
        }

        protected void grdModPerfilReglas_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void cmdModificar_Click(object sender, EventArgs e)
        {
            //Session["idUsuario"] = Request.QueryString["idUsuario"];
            if (_presentador.VerificarModificar(1)) //Validad si el usuario puede modificar un perfil de reglas y valida que el Perfil de Reglas, no este asociado a ningun proyecto
            {
                if (_presentador.LimpiarPerfilAnterior()) //Limpia los registros de Perfil_Regla_Reglas para así poder insertar la nueva modificación del Perfil de Reglas
                {
                    puedeModificar = true;

                    //Session["idUsuario"] = Request.QueryString["idUsuario"];
                    if (puedeModificar) // Bolean que actua como variable de cerrojo para permitir la modificación del Perfil
                    {
                        _presentador.CrearPerfilDeReglas(1); // Llamada al método de CrearPerfilDeReglas, el cual crea una modificación de un perfil de reglas existente //Este método recibe un (1) porque no se implemento el Session["idUsuario"], ver arriba que el código esta adaptado para recibir eso pero está comentado
                        Session["alerta"] = "correcto";
                        Response.Redirect("ModificarPerfilReglas.aspx");
                    }
                    else
                    {
                        Response.Redirect("ModificarPerfilReglas.aspx");
                        Session["alerta"] = "error";
                    }

                }
                else
                {
                    Response.Redirect("ModificarPerfilReglas.aspx");
                    Session["alerta"] = "error";
                }

            }
            else
            {
                Response.Redirect("ModificarPerfilReglas.aspx");
                Session["alerta"] = "error";
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {

        }

        protected void NavigationMenu_MenuItemClick(object sender, MenuEventArgs e)
        {

        }

        protected void NombreClase_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreAtributo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreMetodo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreInterface_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreClase_SelectedIndexChanged1(object sender, EventArgs e)
        {

        }

        protected void NombrePaquete_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentClase_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentEstructura_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentMetodo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void EspacioParentesis_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void EspacioOperadores_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void Llaves_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void Boilerplate_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void BuscarPR_SelectedIndexChanged(object sender, EventArgs e)
        {

            // Session["idUsuario"] = Request.QueryString["idUsuario"];

            int idUsuario = 1;

            if (_presentador.VerificarModificar(idUsuario))
            {
                puedeModificar = true;
                _presentador.Limpiar();
                _presentador.CargarDatos();
                // llenar combo con infotraida
            }
            else
            {
                Session["alerta"] = "perfilnoapto";
                Response.Redirect("ModificarPerfilReglas.aspx");
            }
        }

    }
}